package com.ruoyi.system.domain;
import java.math.BigDecimal;
import java.util.Date;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 代付订单对象 sys_withdraw
 *
 * @author Ericcc
 * @date 2021-03-16
 */
public class SysWithdraw extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 商户代付订单id */
    private Long withdrawId;

    /** 平台相关订单号 */
    @Excel(name = "平台相关订单号")
    private String withdrawCode;

    /** 下游订单号 */
    @Excel(name = "下游订单号")
    private String withdrawChildCode;

    /** 渠道流水号 */
    @Excel(name = "渠道流水号")
    private String withdrawChannelCode;

    /** 商户id */
    private Long userId;

    /** 商户编号 */
    @Excel(name = "商户编号")
    private Integer userCode;

    /** 通道id */
    private Long channelOutId;

    /** 账号名称 */
    @Excel(name = "账号名称")
    private String channelOutName;

    /** 交易金额 */
    @Excel(name = "交易金额")
    private BigDecimal withdrawAmount;

    /** 手续费 */
    @Excel(name = "手续费")
    private BigDecimal withdrawCharge;

    /** 实际金额 */
    @Excel(name = "实际金额")
    private BigDecimal withdrawLastAmount;

    /** 成功时间 */
    @Excel(name = "成功时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date successTime;

    /** 状态（0.处理中，1.成功，2.失败） */
    @Excel(name = "状态", readConverterExp = "0=处理中,1=成功,2=失败")
    private Integer status;

    /** 服务器通知地址(回调地址) */
    private String notifyUrl;

    /** 备注 */
    private String orderRemark;

    /** 访问ip */
    private String ip;

    /** 收款人手机号 */
    private String receiveMobile;

    /** 收款人名称 */
    private String receiveName;

    /** 收款人邮箱 */
    private String receiveEmail;

    /** 收款人ifsc */
    private String receiveIfsc;

    /** 收款人银行名字 */
    private String receiveBankname;

    /** 收款人银行账号 */
    private String receiveBankaccount;

    /** 最后一次通知时间 */
    private Date lastNotifyTime;

    /** 最后一次通知内容 */
    private String lastNotifyContent;

    /** 0自动代付 1手动代付 */
    private Integer withdrawRuleType;

    /** 手续费扣除方式（0商户余额扣, 1.到账金额扣） */
//    @Excel(name = "手续费扣除方式", readConverterExp = "0=商户余额扣,1=到账金额扣")
    private Integer deductType;

    public void setWithdrawId(Long withdrawId)
    {
        this.withdrawId = withdrawId;
    }

    public Long getWithdrawId()
    {
        return withdrawId;
    }
    public void setWithdrawCode(String withdrawCode)
    {
        this.withdrawCode = withdrawCode;
    }

    public String getWithdrawCode()
    {
        return withdrawCode;
    }
    public void setWithdrawChildCode(String withdrawChildCode)
    {
        this.withdrawChildCode = withdrawChildCode;
    }

    public String getWithdrawChildCode()
    {
        return withdrawChildCode;
    }
    public void setWithdrawChannelCode(String withdrawChannelCode)
    {
        this.withdrawChannelCode = withdrawChannelCode;
    }

    public String getWithdrawChannelCode()
    {
        return withdrawChannelCode;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }
    public void setUserCode(Integer userCode)
    {
        this.userCode = userCode;
    }

    public Integer getUserCode()
    {
        return userCode;
    }
    public void setChannelOutId(Long channelOutId)
    {
        this.channelOutId = channelOutId;
    }

    public Long getChannelOutId()
    {
        return channelOutId;
    }
    public void setChannelOutName(String channelOutName)
    {
        this.channelOutName = channelOutName;
    }

    public String getChannelOutName()
    {
        return channelOutName;
    }
    public void setWithdrawAmount(BigDecimal withdrawAmount)
    {
        this.withdrawAmount = withdrawAmount;
    }

    public BigDecimal getWithdrawAmount()
    {
        return withdrawAmount;
    }
    public void setWithdrawCharge(BigDecimal withdrawCharge)
    {
        this.withdrawCharge = withdrawCharge;
    }

    public BigDecimal getWithdrawCharge()
    {
        return withdrawCharge;
    }
    public void setWithdrawLastAmount(BigDecimal withdrawLastAmount)
    {
        this.withdrawLastAmount = withdrawLastAmount;
    }

    public BigDecimal getWithdrawLastAmount()
    {
        return withdrawLastAmount;
    }
    public void setSuccessTime(Date successTime)
    {
        this.successTime = successTime;
    }

    public Date getSuccessTime()
    {
        return successTime;
    }
    public void setStatus(Integer status)
    {
        this.status = status;
    }

    public Integer getStatus()
    {
        return status;
    }
    public void setNotifyUrl(String notifyUrl)
    {
        this.notifyUrl = notifyUrl;
    }

    public String getNotifyUrl()
    {
        return notifyUrl;
    }
    public void setOrderRemark(String orderRemark)
    {
        this.orderRemark = orderRemark;
    }

    public String getOrderRemark()
    {
        return orderRemark;
    }
    public void setIp(String ip)
    {
        this.ip = ip;
    }

    public String getIp()
    {
        return ip;
    }
    public void setReceiveMobile(String receiveMobile)
    {
        this.receiveMobile = receiveMobile;
    }

    public String getReceiveMobile()
    {
        return receiveMobile;
    }
    public void setReceiveName(String receiveName)
    {
        this.receiveName = receiveName;
    }

    public String getReceiveName()
    {
        return receiveName;
    }
    public void setReceiveEmail(String receiveEmail)
    {
        this.receiveEmail = receiveEmail;
    }

    public String getReceiveEmail()
    {
        return receiveEmail;
    }
    public void setReceiveIfsc(String receiveIfsc)
    {
        this.receiveIfsc = receiveIfsc;
    }

    public String getReceiveIfsc()
    {
        return receiveIfsc;
    }
    public void setReceiveBankname(String receiveBankname)
    {
        this.receiveBankname = receiveBankname;
    }

    public String getReceiveBankname()
    {
        return receiveBankname;
    }
    public void setReceiveBankaccount(String receiveBankaccount)
    {
        this.receiveBankaccount = receiveBankaccount;
    }

    public String getReceiveBankaccount()
    {
        return receiveBankaccount;
    }
    public void setLastNotifyTime(Date lastNotifyTime)
    {
        this.lastNotifyTime = lastNotifyTime;
    }

    public Date getLastNotifyTime()
    {
        return lastNotifyTime;
    }
    public void setLastNotifyContent(String lastNotifyContent)
    {
        this.lastNotifyContent = lastNotifyContent;
    }

    public String getLastNotifyContent()
    {
        return lastNotifyContent;
    }
    public void setWithdrawRuleType(Integer withdrawRuleType)
    {
        this.withdrawRuleType = withdrawRuleType;
    }

    public Integer getWithdrawRuleType()
    {
        return withdrawRuleType;
    }
    public void setDeductType(Integer deductType)
    {
        this.deductType = deductType;
    }

    public Integer getDeductType()
    {
        return deductType;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("withdrawId", getWithdrawId())
                .append("withdrawCode", getWithdrawCode())
                .append("withdrawChildCode", getWithdrawChildCode())
                .append("withdrawChannelCode", getWithdrawChannelCode())
                .append("userId", getUserId())
                .append("userCode", getUserCode())
                .append("channelOutId", getChannelOutId())
                .append("channelOutName", getChannelOutName())
                .append("withdrawAmount", getWithdrawAmount())
                .append("withdrawCharge", getWithdrawCharge())
                .append("withdrawLastAmount", getWithdrawLastAmount())
                .append("createTime", getCreateTime())
                .append("successTime", getSuccessTime())
                .append("status", getStatus())
                .append("notifyUrl", getNotifyUrl())
                .append("orderRemark", getOrderRemark())
                .append("ip", getIp())
                .append("receiveMobile", getReceiveMobile())
                .append("receiveName", getReceiveName())
                .append("receiveEmail", getReceiveEmail())
                .append("receiveIfsc", getReceiveIfsc())
                .append("receiveBankname", getReceiveBankname())
                .append("receiveBankaccount", getReceiveBankaccount())
                .append("lastNotifyTime", getLastNotifyTime())
                .append("lastNotifyContent", getLastNotifyContent())
                .append("withdrawRuleType", getWithdrawRuleType())
                .append("deductType", getDeductType())
                .toString();
    }
}